//这里多采用异步的方式操作文件，但是需要注意的是在node中，操作文件也有同步方法。
let path = require('path');
let fs = require('fs');

/**
 * 读取文件夹下的文件目录并执行回调函数
 * @param dir
 * @param callback
 */
function readDir(dir, callback) {
    //如果文件夹不存在，创建一个
    makeDir(dir, function () {
        fs.readdir(dir, function (err, files) {
            if (err) {
                callback(err);
                return;
            }
            callback(null, files);
        });
    });
}

function makeDir(dir, callback) {
    if (!fs.existsSync(dir)) {
        fs.mkdir(dir, function (err) {
            if (err) {
                return console.error(err);
            }
            console.log("目录创建成功。");
            callback();
        });
    } else {
        callback();
    }
}

/**
 * 读取文件内容，并执行回调函数
 * @param file
 * @param callback
 */
function readFile(file, callback) {
    fs.readFile(file, function (err, content) {
        if (err) {
            callback(err);
            return;
        }
        callback(null, content);
    });
}

/**
 * 写入文件内容
 * @param filePath
 * @param content
 * @param callback
 */
function writeFile(filePath, content, callback) {
    makeDir(path.parse(filePath).dir, function () {
        fs.writeFile(filePath, content, function (err) {
            if (err) {
                return console.error(err);
            }
            console.log("数据写入成功！");
            callback();
        });
    });
}

exports.readDir = readDir;
exports.readFile = readFile;
exports.writeFile = writeFile;